package cn.coco.jf.fw.admin.sys.dao.gencdkey;

import java.util.Date;

import cn.coco.jf.fw.core.db.SysGenCdkeyTbl;
import cn.exlu.coco.core.utils.DateUtil;

public class GenCdkeyDao {
    public static String syn ="";

    /**
     * 
     * 获取下一个自增随机数。
     * 注意：cdkeyPtn有且只能存在一条数据
     * @param cdkeyPtn
     * @return
     */
    public static Integer nextCdkeyPrefix(String cdkeyPtn){
        synchronized(syn){

            SysGenCdkeyTbl entity = SysGenCdkeyTbl.dao.findById(cdkeyPtn);
            
            int cdkeyPrefix = entity.getCdkeyPrefix();
            
            cdkeyPrefix++;
             
            entity.setCdkeyPrefix(cdkeyPrefix);
            
            entity.setGenDate(DateUtil.currentBusDate());
            
            entity.update();
            
            return entity.getCdkeyPrefix();

        }
    }
    
    /**
     * 
     * 获取下一个自增随机数。
     * 按年循环
     * 注意：cdkeyPtn有且只能存在一条数据
     * @param cdkeyPtn
     * @return
     */
    public static SysGenCdkeyTbl nextCdkeyPrefixStepYear(String cdkeyPtn){
        synchronized(syn){
            SysGenCdkeyTbl entity = SysGenCdkeyTbl.dao.findById(cdkeyPtn);
            
            int cdkeyPrefix = entity.getCdkeyPrefix();
            
            Date nowDate = DateUtil.currentBusDate();

            if(DateUtil.isEqualsByYear(nowDate, entity.getGenDate())){
                cdkeyPrefix++;
            }else{
                cdkeyPrefix = 1;
            }

            entity.setCdkeyPrefix(cdkeyPrefix);
            entity.setGenDate(nowDate);

            entity.update();
            
            return entity;

        }
    }

    
}
